package jdx_12_Unsafe;

//import sun.misc.*;

//Unsafe这个类的构造方法是一个私有的
import sun.misc.Unsafe;

/*
[Unsafe] 这个类基本上等同于 C/C++的指针
所有的AtomicXxx类都是通过Unsafe来实现的

1).直接操作内存
- allocateMemory() ; putXxx(); freeMemory(); pageSize();

2).直接生成类的实例
- allocateInstance();

3).直接操作类或者实例的变量
- objectFieldOffset();
- getInt();
- getObject();

4).CAS等相关操作
- weakCompareAndSetObject();

[补充]
在C语言中
分配内存：malloc
释放内存：free

在C++中
分配内存：new
释放内存：delete

 */
public class HelloUnsafe {
    static class M {
        private M() {}

        int i =0;
    }

   public static void main(String[] args) throws InstantiationException {
        Unsafe unsafe = Unsafe.getUnsafe();
        M m = (M)unsafe.allocateInstance(M.class);
        m.i = 9;
        System.out.println(m.i);
    }
}


